]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
9 months agoUpdate Greek translation
Efstathios Iosifidis [Fri, 6 Feb 2026 21:45:43 +0000 (21:45 +0000)]
Update Greek translation

9 months agoUpdate Greek translation
Efstathios Iosifidis [Fri, 6 Feb 2026 21:25:19 +0000 (21:25 +0000)]
Update Greek translation

9 months agobuild: Update libgnome-volume-control revision (again)
Florian Müllner [Wed, 4 Feb 2026 17:25:32 +0000 (18:25 +0100)]
build: Update libgnome-volume-control revision (again)

The previous update caused duplicated device entries, pull in the
fix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4063>
(cherry picked from commit 4352532c7af77044c6ac16c2bf67073a337a8226)

9 months agoswipeTracker: Handle invalid position when finding previous point
Florian Müllner [Wed, 4 Feb 2026 13:12:25 +0000 (14:12 +0100)]
swipeTracker: Handle invalid position when finding previous point

Commit 8e29babca8adc677 switched to `findLastIndex()` to find
the previous point, which inadvertently changed what value is
returned for invalid input.

Restore the old fallback value and log a stacktrace, so we can
hopefully track down what causes the invalid input.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8856
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4062>
(cherry picked from commit eb9caf0028be0d5740fc419e7e865584c0f52cab)

9 months agomain: Only call gjs_dumpstack() on warnings from main thread
Sebastian Keller [Wed, 21 Jan 2026 21:54:39 +0000 (22:54 +0100)]
main: Only call gjs_dumpstack() on warnings from main thread

The mozjs code called by gjs_dumpstack() does not appear to be thread
safe and was sometimes resulting in crashes when triggered by error
messages from threads other than the main thread. And even when not
crashing, such a backtrace can only be misleading since only the main
thread is executing JS code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4046>
(cherry picked from commit 23e3e7970f1ef316c0a5bce2dea4872cf1ca5750)

9 months agost/password-entry: Update input hints when toggling password visibility
Joan Torres Lopez [Thu, 29 Jan 2026 12:46:19 +0000 (13:46 +0100)]
st/password-entry: Update input hints when toggling password visibility

Set the HIDDEN_TEXT hint when the password is hidden and remove it
when shown. This ensures IBus is aware when it should hide pre-edit
text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4053>
(cherry picked from commit 7d3437cbd0f412391d4918a799d8bff1c72c4b12)

9 months agoinputMethod: Honor the HIDDEN_TEXT hint of IBusInputHint
Joan Torres Lopez [Thu, 29 Jan 2026 13:04:40 +0000 (14:04 +0100)]
inputMethod: Honor the HIDDEN_TEXT hint of IBusInputHint

Makes the pre-edit text hidden with a "_".

This hint was added in IBus 1.5.34, although if IBus doesn't support it,
it will silently fallback to no-op which is fine.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4053>
(cherry picked from commit a39035fda4e1cf487b83483e2d4fe41a830d7fea)

9 months agostyle: Adjust padding for close button in message list
Ramez Medhat [Sat, 17 Jan 2026 15:33:54 +0000 (17:33 +0200)]
style: Adjust padding for close button in message list

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4041>
(cherry picked from commit 10bbebad14d1c38b45cb43c05f066641cd62961c)

9 months agoci: Use meson setup and remove deprecated option --fs-capture-search
Gabriel Poliker-Paul [Fri, 30 Jan 2026 22:12:49 +0000 (22:12 +0000)]
ci: Use meson setup and remove deprecated option --fs-capture-search

meson with options has been deprecated for a while, and it may be fully
phased out soon.

For Coverity, --fs-capture-search was deprecated in 2019.09 and has been
fully removed for almost 2 years[0].

[0] https://documentation.blackduck.com/bundle/coverity-docs-2024.6/page/coverity-analysis/topics/moving_from_filesystem_capture_to_the_coverity_cli.html

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4059>
(cherry picked from commit 96ab95a675b94700886056361e95488bd8c91c01)

9 months agogdm/util: Do not run dispose on user verifier
Marco Trevisan (Treviño) [Wed, 17 Sep 2025 17:06:55 +0000 (19:06 +0200)]
gdm/util: Do not run dispose on user verifier

This is not a good habit anywhere and especially in JS code, I assume
the rationale for this was to ensure that cached instances of the proxy
were cleared, but this did not work properly (as it happened on
finalize), and it would still require [1].

So let's just avoid this and assume that the getters just return what we
expect.

[1] https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/321

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3885>
(cherry picked from commit 7029cf41f1265a50009c237045aa36d73be1165b)

9 months agogdm/util: Clear the request if user verifier connection is closed
Marco Trevisan (Treviño) [Wed, 17 Sep 2025 17:04:46 +0000 (19:04 +0200)]
gdm/util: Clear the request if user verifier connection is closed

Similarly to previous commit, in case the user verifier connection is
closed we should just clear the user verifier instance, since starting
from this point is going to be just invalid.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3885>
(cherry picked from commit 91a736a09ed9f5e2d11c733535b479fbf4f4fddf)

9 months agogdm/loginDialog: Reset the greeter proxy on connection closed
Marco Trevisan (Treviño) [Wed, 17 Sep 2025 16:26:17 +0000 (18:26 +0200)]
gdm/loginDialog: Reset the greeter proxy on connection closed

If gdm fails to start the display session the greeter proxy we are using
gets disconnected, however since commit 56ea95f2 we are now preserving
the greeter instance, and this will eventually lead to using an instance
of a disconnected proxy.

This eventually implies that after a login failure, we would never get
the `::session-opened` signal that actually triggers the session start.

And thus, even the user has properly authenticated, gdm will stick to
the authentication page.

So, instead of reverting such commit (that isn't wrong per se), consume
the greeter proxy connection `::closed` signal and use it to
re-initialize the greeter instance.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3885>
(cherry picked from commit ed6531fa79a67309f786893321c4b7af23f9d651)

9 months agohotplut-sniffer: Use one-shot idle/timeout functions
Florian Müllner [Thu, 29 Jan 2026 13:29:58 +0000 (14:29 +0100)]
hotplut-sniffer: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>
(cherry picked from commit 1b1d22b5da2aea45f3125c91b72fc636a736abf1)

9 months agotray: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 17:13:32 +0000 (18:13 +0100)]
tray: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>
(cherry picked from commit cc1e00e8783beb443d50a5db1d59f5232604e2f5)

9 months agost: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 17:13:04 +0000 (18:13 +0100)]
st: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>
(cherry picked from commit 6f52b3a7b1740ad26eba616d8fa88c82441fabca)

9 months agoshell: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 16:57:20 +0000 (17:57 +0100)]
shell: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>
(cherry picked from commit 3a1d28c866e1efba695f4d9b724f7e1c732d254f)

9 months agogdm/util: Set minimum display time for authentication messages
Joan Torres Lopez [Wed, 28 Jan 2026 17:01:26 +0000 (18:01 +0100)]
gdm/util: Set minimum display time for authentication messages

Short messages like "PIN locked" were previously displayed for only
480ms (10 chars × 48ms), making them impossible to read. Ensure all
messages are shown for at least 2 seconds.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4054>
(cherry picked from commit 72073e008f35f197201e6c38ab506fbe5973fbeb)

9 months agoquickSettingsMenu: Add actor group to focus manager
Ramez Medhat [Wed, 21 Jan 2026 15:28:22 +0000 (17:28 +0200)]
quickSettingsMenu: Add actor group to focus manager

This allows focus to menu item using the tab key to match the behaviour in other menus.
Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8904

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4043>
(cherry picked from commit 92eebde81cebfc25bdd4ef5ec1815f59598ba6bd)

9 months agoappDisplay: Only create default folders on the first start
Sebastian Keller [Sat, 24 Jan 2026 17:15:43 +0000 (18:15 +0100)]
appDisplay: Only create default folders on the first start

If all folders were removed, after a session restart the default folders
would have been recreated again, effectively preventing users from
using the app grid without folders.

Avoid this problem by only creating the default folders if the
folder-children setting has never been modified before.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8713
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4047>
(cherry picked from commit 889c1a444fcfd0588716528b8ee7dd858a610694)

9 months agost/spinner-content: Fix CoglTexture leak
Sebastian Keller [Wed, 21 Jan 2026 18:50:33 +0000 (19:50 +0100)]
st/spinner-content: Fix CoglTexture leak

Most of the members were getting indirectly freed via the
st_spinner_content_set_actor (spinner, NULL) and the subsequent
st_spinner_content_invalidate () on destruction of the actor or
changing of its content when the spinner is stopped.
The texture however was not freed.

This now frees all members explicitly on finalize.

208 (96 direct, 112 indirect) bytes in 1 blocks are definitely lost in loss record 20,960 of 22,464
   at 0x4D37833: g_type_create_instance (gtype.c:1877)
   by 0x4D1C186: g_object_new_internal.part.0 (gobject.c:2666)
   by 0x4D1E0FA: g_object_new_internal (gobject.c:2982)
   by 0x4D1E0FA: g_object_new_valist (gobject.c:3004)
   by 0x4D1E488: g_object_new (gobject.c:2479)
   by 0x5A8B7CB: _cogl_texture_2d_create_base (cogl-texture-2d.c:84)
   by 0x572D668: st_spinner_content_paint_content (st-spinner-content.c:175)
   by 0x50D2C07: clutter_actor_paint_node (clutter-actor.c:3471)
   by 0x50D2C07: clutter_actor_continue_paint (clutter-actor.c:3726)
   by 0x511D4F9: clutter_paint_node_paint (clutter-paint-node.c:867)
   by 0x50D9717: clutter_actor_paint (clutter-actor.c:3670)
   by 0x574199A: st_viewport_paint (st-viewport.c:483)
   by 0x50D2C42: clutter_actor_continue_paint (clutter-actor.c:3728)
   by 0x511D4F9: clutter_paint_node_paint (clutter-paint-node.c:867)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4045>
(cherry picked from commit ba0c4bda8083b0190ce5e0f38255b6e7b6fcffcf)

9 months agoUpdate Czech translation
Daniel Rusek [Wed, 4 Feb 2026 22:28:44 +0000 (22:28 +0000)]
Update Czech translation

9 months agobreakManager: Use uninhibitable idle watch
Sebastian Keller [Tue, 6 May 2025 00:40:18 +0000 (02:40 +0200)]
breakManager: Use uninhibitable idle watch

If we use a regular idle watch, any session inhibitors can prevent the
watch from triggering, leading to the break manager to never consider
the break as having been completed until the inhibitor is gone. This
could lead to situations in which the system appears to be stuck with
a dimmed screen.

Also start the idle time when the idle watch is created, otherwise any
previous idle time would count towards it, causing the watch to trigger
early, leaving it inconsistent with the rest of the break manager state.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8378
(cherry picked from commit b2e5a125ae8bf682b0d54d925ce8fdf26680b48e)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4058>

9 months agoenvironment: Add fallback for MetaIdleMonitor::add_idle_watch_full()
Sebastian Keller [Fri, 30 Jan 2026 14:43:09 +0000 (15:43 +0100)]
environment: Add fallback for MetaIdleMonitor::add_idle_watch_full()

This function was only added in the 50 cycle and then backported to
stable releases, so it might not exist in the version of mutter we are
using.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4058>

9 months agobuild: Update libgnome-volume-control revision
Carlos Garnacho [Sun, 25 Jan 2026 08:28:11 +0000 (09:28 +0100)]
build: Update libgnome-volume-control revision

This should fix the crashes seen with bluetooth headsets recently.

(cherry-pick of commit 798230599950607ec285daecd070f5bcb28580e4)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4060>

9 months agoUpdate Thai translation
Aefgh Threenine [Sat, 31 Jan 2026 10:34:11 +0000 (10:34 +0000)]
Update Thai translation

9 months agoRevert "main: Register session with GDM on startup"
Joan Torres Lopez [Tue, 27 Jan 2026 12:33:36 +0000 (13:33 +0100)]
Revert "main: Register session with GDM on startup"

This depends on GDM changes that are not in this release.

This reverts commit 6457a1454a05bac8f7e172c17fbcb2b5baeae619.

9 months agoBump version to 49.3
Florian Müllner [Wed, 14 Jan 2026 18:42:23 +0000 (19:42 +0100)]
Bump version to 49.3

Update NEWS.

9 months agoUpdate Norwegian Nynorsk translation
Bjørn Mørkedal [Mon, 19 Jan 2026 13:45:39 +0000 (13:45 +0000)]
Update Norwegian Nynorsk translation

9 months agoshellDBus: Add new BrightnessChanged signal to brightness interface
Carlos Garnacho [Mon, 24 Nov 2025 16:16:57 +0000 (17:16 +0100)]
shellDBus: Add new BrightnessChanged signal to brightness interface

This does actually track user-triggered changes, so other pieces
(i.e. gsd-power) can react to this. This will help in reintroducing
brightness re-normalization when brightness is driven by ALS sensors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3979>
(cherry picked from commit 8e1d63029a5a999a65402157cda2ca503eb3866c)

9 months agobrightnessManager: Emit signal on user changes
Carlos Garnacho [Mon, 24 Nov 2025 16:15:53 +0000 (17:15 +0100)]
brightnessManager: Emit signal on user changes

This will be useful to let other pieces know of user-triggered
brightness changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3979>
(cherry picked from commit 50378650aed2796956cc2d6460b6a5c2e039b618)

9 months agojs: Don't reset selected tab index in open() of looking glass
sudigit [Sat, 3 Jan 2026 15:24:24 +0000 (20:54 +0530)]
js: Don't reset selected tab index in open() of looking glass

The looking glass will reopen with the previously opened tab.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8294
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4027>
(cherry picked from commit 304d027eb6d7f6bf80ea7e068a7148d228d46e91)

9 months agokeyboard: Call ibusManager.setEngine() with actual layout
Takao Fujiwara [Wed, 29 Oct 2025 12:34:22 +0000 (21:34 +0900)]
keyboard: Call ibusManager.setEngine() with actual layout

Currently ibusManager.setEngine() is always called with 'xkb:us::eng'
US layout name but the actual language layout is more useful for IBus.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8490
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3784>
(cherry picked from commit e0ab0a68b6ee495d72898db513b053eba78773d8)

9 months agocalendar: Center align "No Notifications" text
revisto [Wed, 17 Dec 2025 21:13:47 +0000 (00:43 +0330)]
calendar: Center align "No Notifications" text

The "No Notifications" placeholder was left-aligned instead of
centered, which looked unbalanced in the empty notification state.
Fix by centering the label.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8913
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4005>
(cherry picked from commit 8efd2ec8b9c62cac7e875bc8d7b596b2b1f90f7c)

9 months agooverviewControls: Use ease-out-sine when entering overview and app grid
Hari Rana [Sat, 13 Dec 2025 03:36:57 +0000 (22:36 -0500)]
overviewControls: Use ease-out-sine when entering overview and app grid

Using animations with slower initial curves on display-wide
layout shifts may provide a smoother experience to users of
low(er) refresh rate and/or large(r) displays, as they avoid
skipping large chunks of frames, making it less choppy at
the beginning of the animation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4000>
(cherry picked from commit c518e3ddcc7bee86331a3c2f73896793d00f4f91)

9 months agocss: Define a higher contrast insensitive text style for card elements
Sam Hewitt [Wed, 10 Dec 2025 14:46:37 +0000 (11:16 -0330)]
css: Define a higher contrast insensitive text style for card elements

- fixes an oversight in color definitions for insensitive style text on cards where contrast was insufficient

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8683
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3998>
(cherry picked from commit 9dfa625d10c11c287b090ee5a6f39b4678a4c408)

9 months agoscreenShield: Fix user deselection after idle in greeter
Lukas Schmelting [Fri, 5 Dec 2025 08:15:33 +0000 (09:15 +0100)]
screenShield: Fix user deselection after idle in greeter

When the session goes idle, _maybeCancelDialog() cancels any ongoing
authentication dialog. Commit b16ee1a added code to grab focus after
cancellation, ensuring it stayed on the lock screen curtain rather than
wherever cancel() placed it. This was needed to handle keyboard events
like Enter to raise the unlock dialog.

Commit 727c84251 changed this to grab focus on the dialog itself, since
the lock screen architecture had evolved. However, in the greeter case
there is no separate curtain - the LoginDialog is shown directly and
cancel() already restores focus to the user list via _showUserList().
The additional focus grab on the dialog container moved focus away from
the selected user as soon as the screen began to dim, causing the
username to appear deselected when returning from idle.

Similarly, _ensureUnlockDialog() and _resetLockScreen() grabbed focus on
the dialog container when the screen fully blanked, causing the same
issue.

For the greeter, replace grab_key_focus() with activate(), which
delegates to LoginDialog.activate() and properly focuses the user list.
For the unlock dialog, keep the original grab_key_focus() behavior -
calling UnlockDialog.activate() would invoke _showPrompt(), which would
interfere with commit 4bfa30085 that returns to the clock view after
suspend.

See-also: b16ee1a3a6c02facc803be45d2859e53c906decd
See-also: 727c84251d6e536c5658962b4fd4ec89acdc832f
See-also: 4bfa300850045dcd7c974bdd128adef13f2777b1
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1132
Closes: https://gitlab.gnome.org/GNOME/gdm/-/issues/599
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3993>
(cherry picked from commit f0ca3d47c31a4bc552042f4bd0c01619f2bda755)

9 months agoscreenshot: Improve accessibility of the icon label buttons
Lukáš Tyrychtr [Fri, 26 Sep 2025 15:35:20 +0000 (17:35 +0200)]
screenshot: Improve accessibility of the icon label buttons

Set the label actor properly so the buttons have a label.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3893>
(cherry picked from commit 53dade4c0ab4f1dd4f1ba286d8e867360e32e54c)

9 months agoswipeTracker: Handle touchpad gestures on actor
Florian Müllner [Tue, 9 Dec 2025 13:33:38 +0000 (14:33 +0100)]
swipeTracker: Handle touchpad gestures on actor

Touchscreen gestures and scrolling are already handled by events
on the associated actor rather than the stage. There's no good
reason to not do the same for touchpad gestures as well.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8850
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3997>
(cherry picked from commit 006cef5a687814a5560a564811b16e76430291fc)

9 months agoenvironment: Ignore prepare/cleanup in no duration animations
Marco Trevisan (Treviño) [Tue, 2 Dec 2025 03:12:30 +0000 (04:12 +0100)]
environment: Ignore prepare/cleanup in no duration animations

These animations are just completing immediately, so there is no need to
increase the complexity by calling unneeded code

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3992>
(cherry picked from commit c4009e87d0120e3e769a3e28b6a0fdb36d7b443d)

9 months agoenvironment: Split out the prepare and cleanup animation code
Marco Trevisan (Treviño) [Fri, 5 Dec 2025 22:39:23 +0000 (23:39 +0100)]
environment: Split out the prepare and cleanup animation code

We do the same twice, and it's not trivial code anymore, so let's
separate this into another function which returns the prepare and cleanup
functions

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3992>
(cherry picked from commit 7aacc1cab033fd77370b8d03b037892b3dd28a7f)

9 months agoworkspaceAnimation: Use separate WorkspaceBackground class
Florian Müllner [Fri, 5 Dec 2025 09:06:32 +0000 (10:06 +0100)]
workspaceAnimation: Use separate WorkspaceBackground class

Separating WorkspaceGroup and WorkspaceBackground allows each to
track its own set of windows without special-casing exceptions.

This will also give us more flexibility in the future, if we need
to reuse the background elsewhere. This may happen if we optionally
change the animation to a crossfade for the new `reduced-motion`
setting.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3995>
(cherry picked from commit b5e82f6e897fd081518020580ad73bb629bacf3f)

9 months agoworkspaceAnimation: Split out BaseWorkspaceGroup
Florian Müllner [Fri, 5 Dec 2025 08:25:30 +0000 (09:25 +0100)]
workspaceAnimation: Split out BaseWorkspaceGroup

Since we started to show DESKTOP windows as part of the background
during the workspace animation, we need to track both the windows
relevant for the monitor/workspace and DESKTOP windows.

We are about to split out the background handling into its own class.

To prepare for this, split out a BaseWorkspaceGroup class that handles the
basic "create clones of relevant windows and track them" functionality
common to both cases.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3995>
(cherry picked from commit 96be47933ffdc2c0645aae155ce1b2cf6b16593a)

9 months agoenvironment: Ignore animation events after shutdown
Marco Trevisan (Treviño) [Fri, 5 Dec 2025 22:14:29 +0000 (23:14 +0100)]
environment: Ignore animation events after shutdown

As soon as the shutdown starts, any animation event does not make sense,
although during this phase the clutter timelines may still proceed and
potentially calling invalid code in their callbacks.

Prevent this from happening by disconnecting from any timeline signal
we are connected to as soon as the `shutdown` signal is emitted

Co-Authored-By: Florian Müllner <fmuellner@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3996>
(cherry picked from commit 240aa910dc842098c843cad498572660aee0c66f)

9 months agoenvironment: Do not try to animate a St.Adjustment with unmapped actor
Marco Trevisan (Treviño) [Thu, 4 Dec 2025 04:18:04 +0000 (05:18 +0100)]
environment: Do not try to animate a St.Adjustment with unmapped actor

We were already doing this for actual actors, but the case was
skipped in the St.Adjustment case.

However, as it is an animatable we can just use its related actor as
reference, and keep the same logic despite their actual object type

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3991>
(cherry picked from commit 4d56b51100df05032ee78c5fa556b4e003de2761)

9 months agoenvironment: Generalize easeActorProperty to animatable case
Marco Trevisan (Treviño) [Thu, 4 Dec 2025 04:14:23 +0000 (05:14 +0100)]
environment: Generalize easeActorProperty to animatable case

We're not handling actors only with it but also St.Adjustment that is a
Clutter.Animatable, so let's name it for what it is, and adjust the
parameter so that its type is not given for granted

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3991>
(cherry picked from commit c33d729ba31cf5ab7d9f3cee78eb0f527df3c577)

9 months agooverviewControls: Wait for all animation promises on startup
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:18:19 +0000 (05:18 +0100)]
overviewControls: Wait for all animation promises on startup

Currently on startup we're just waiting for a single animation (the dash
one) being completed, while this is acceptable since the animation
duration is not shorter or longer than others, it's still not clean, as
technically we should just wait for all the pending animations of the
set before calling the startup animation completed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3944>
(cherry picked from commit 954ef2f9efe8149b2495b5a412ee21f550835830)

9 months agocapsLockWarning: Mark as not visible to a11y tree when hidden
Lukáš Tyrychtr [Tue, 25 Nov 2025 14:26:09 +0000 (15:26 +0100)]
capsLockWarning: Mark as not visible to a11y tree when hidden

We're animating it away, but not for the a11y tree.

This fixes it, so the caps lock warning is not read regardless of the state
of the key.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3981>
(cherry picked from commit ccd1a0b8f52e29ccd2356c5d2ac34e473b174cd0)

9 months agoscreenShield: Avoid unfocused authentication view after resume
Lukas Schmelting [Thu, 27 Nov 2025 22:58:32 +0000 (23:58 +0100)]
screenShield: Avoid unfocused authentication view after resume

When suspending on the authentication page of the lock screen in a user
session, the session resumes with the authentication dialog shown but
its password entry field unfocused. Instead, focus moves to the
authentication dialog itself while _ensureUnlockDialog() in
screenShield.js is called on resume.

Avoid this edge case by switching to the clock view instead before
suspend, which also provides a more consistent user experience.

Co-authored-by: Florian Müllner <fmuellner@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3962>
(cherry picked from commit 4bfa300850045dcd7c974bdd128adef13f2777b1)

9 months agomessageTray: Disconnect to global signals on destruction
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 23:28:12 +0000 (00:28 +0100)]
messageTray: Disconnect to global signals on destruction

The global display object has always a longer lifetime than anything
that is initialized from JS, so avoid signals that it may emit to be
handled at later point.

It handles issues such as:
  (gnome-shell:2429): Gjs-CRITICAL **: 23:18:35.025: Object
  Gjs_ui_messageTray_MessageTray (0x3440ed60), has been already disposed —
  impossible to set any property on it.
  This might be caused by the object having been destroyed from C code using
  something such as destroy(), dispose(), or remove() vfuncs.
  == Stack trace for context 0x31073eb0 ==
  #0       348db378 i   resource:///org/gnome/shell/ui/messageTray.js:1046 (3a8ac3a71f60 @ 104)
  #1       348db2d8 i   resource:///org/gnome/shell/ui/main.js:277 (3a8ac3a0b100 @ 119)

Seen in: https://gitlab.gnome.org/GNOME/gnome-shell/-/jobs/5846454

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3987>
(cherry picked from commit 1f4da30ff35577403b290648cbbc8eb4039e9d8f)

9 months agotest-tool: Remove unused imports
Florian Müllner [Thu, 27 Nov 2025 14:18:38 +0000 (15:18 +0100)]
test-tool: Remove unused imports

Fixes: ee7e62c9c8 ("perf-tool: Spawn perf-tool-helper from gnome-shell")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>
(cherry picked from commit 16c898379bca629e7a3b481a47d4f9c956525a8b)

9 months agotest-tool: Adjust name in --version
Florian Müllner [Thu, 27 Nov 2025 14:41:44 +0000 (15:41 +0100)]
test-tool: Adjust name in --version

The tool was renamed from "perf-tool" a while ago, to reflect
that its purpose has shifted from collecting performance data
to running gnome-shell with scripted tests.

Fixes: 9bb003463c ("test-tool: Rename perf-tool")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>
(cherry picked from commit c6a6331bf8fa3e444d4f401a953364e6ad798416)

9 months agooverviewControls: Only import STARTUP_ANIMATION_TIME from layout
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 10:27:35 +0000 (11:27 +0100)]
overviewControls: Only import STARTUP_ANIMATION_TIME from layout

It's the only value we use from that module, and this would ensure that
the value is actually imported and it's not potentially an undefined
value

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>
(cherry picked from commit 6cf67958a5f6003cb8d79ba5d120b15478455f75)

9 months agolayout: Export STARTUP_ANIMATION_TIME
Marco Trevisan (Treviño) [Tue, 25 Nov 2025 21:40:00 +0000 (22:40 +0100)]
layout: Export STARTUP_ANIMATION_TIME

We are using it in overviewControls but the value is not exported.

This caused an issue when the animations are not enabled, since in a
racy way (e.g. only sometimes, depending on the init speed) the value
was undefined, and so we ended up falling back to the default animation
duration time.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>
(cherry picked from commit 087b0fda5d64f7a74460ef4a0f923a1235aff50f)

9 months agoenvironment: Always honor easing duration settings
Marco Trevisan (Treviño) [Tue, 25 Nov 2025 21:48:54 +0000 (22:48 +0100)]
environment: Always honor easing duration settings

In case an actor easing is created without an explicit duration, we
should rely to the default animation that Clutter.Actor.save_easing_state()
sets to 250ms.

This fine in normal use cases, but in case the animations are disabled
the current code skips calling our Clutter.Actor.set_easing_duration()
override, and so we just end up leaving the actor easing time to 250ms,
not respecting the St settings

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3983>
(cherry picked from commit 3deaf1eb7d29cda5bc13f3cfc759c9c4da069545)

9 months agoswitcherPopup: Fix switch-group mouse click regression
Håkon Hægland [Tue, 11 Nov 2025 18:46:32 +0000 (19:46 +0100)]
switcherPopup: Fix switch-group mouse click regression

The LongPressGesture 'may-recognize' callback in commit 314137c8c was
checking if clicks were inside '_switcherList', but thumbnails shown by
switch-group are siblings of _switcherList, not children.

This caused the gesture to incorrectly identify thumbnail clicks as
'outside' clicks, closing the popup before the click could complete.

Fix by adding a _isActorOutside() helper method that subclasses can
override to check additional containers. AppSwitcherPopup now properly
checks both _switcherList and _thumbnails.

Tested on Ubuntu 25.10 with GNOME Shell 49.0. Confirmed:
- switch-group mouse clicks now work
- switch-applications and switch-windows unaffected
- clicking outside the popup still closes it correctly
- no regressions introduced

Fixes: 314137c8c9 ("switcherPopup: Move to a ClutterGesture for closing the popup")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8812
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3959>
(cherry picked from commit 811364ae59340195aa1c9c3edcc0d784d39105c2)

9 months agoUpdate Romanian translation
Antonio Marin [Fri, 9 Jan 2026 09:25:53 +0000 (09:25 +0000)]
Update Romanian translation

9 months agoUpdate Norwegian Bokmål translation
Kjartan Maraas [Thu, 8 Jan 2026 23:13:11 +0000 (23:13 +0000)]
Update Norwegian Bokmål translation

9 months agoUpdate Norwegian Bokmål translation
Kjartan Maraas [Thu, 8 Jan 2026 23:09:01 +0000 (23:09 +0000)]
Update Norwegian Bokmål translation

9 months agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Thu, 8 Jan 2026 16:11:17 +0000 (16:11 +0000)]
Update Kazakh translation

10 months agoUpdate Romanian translation
Antonio Marin [Tue, 6 Jan 2026 22:13:16 +0000 (22:13 +0000)]
Update Romanian translation

10 months agoUpdate Romanian translation
Antonio Marin [Tue, 6 Jan 2026 13:48:16 +0000 (13:48 +0000)]
Update Romanian translation

10 months agoUpdate Uzbek (Latin) translation
Baxrom Raxmatov [Wed, 24 Dec 2025 14:42:53 +0000 (14:42 +0000)]
Update Uzbek (Latin) translation

10 months agoUpdate Portuguese translation
Hugo Carvalho [Sat, 20 Dec 2025 11:00:54 +0000 (11:00 +0000)]
Update Portuguese translation

11 months agoUpdate Romanian translation
Antonio Marin [Sun, 30 Nov 2025 17:41:16 +0000 (17:41 +0000)]
Update Romanian translation

11 months agoBump version to 49.2
Florian Müllner [Sat, 22 Nov 2025 02:20:48 +0000 (03:20 +0100)]
Bump version to 49.2

Update NEWS.

11 months agomessageList: Check if Message is expanded
SymphonySimper [Sat, 22 Nov 2025 13:01:05 +0000 (18:31 +0530)]
messageList: Check if Message is expanded

Check if Message is expanded in expand method, to prevent rerunning the
expand animation when it's already expanded

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3978>
(cherry picked from commit 2f08a95b1efdef83a48e3d261937469070967d0a)

11 months agoscreenShield: Emit ::screen-lock-shown early with animated fades
Carlos Garnacho [Fri, 21 Nov 2025 13:46:03 +0000 (14:46 +0100)]
screenShield: Emit ::screen-lock-shown early with animated fades

If the screen is locked with animatedFade parameter enabled, the
screenShield currently defers the emission of this signal until the
lightbox toggles on. However the lightbox might be prevented from
ever doing that by later input.

If this emission is delayed enough, it will result in ShellDBus
missing the D-Bus timeout for replying to the Lock request, since
it does rely on this signal being emitted in order to reply back.

It does however make sense to keep setting the active state after
the animation, so the inhibitors are synchronized at the point the
lightbox kicks in.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8644
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3971>
(cherry picked from commit 7f84efb1edd652e55441c48af14d19d7d6b15b4e)

11 months agodash: Fix wrong separator position
Raghuveer Kasaraneni [Sun, 5 Sep 2021 08:33:18 +0000 (10:33 +0200)]
dash: Fix wrong separator position

The separator position takes drag placeholders into account, but not
any removed favorites that are currently animating out.

As a result, we may end up with the wrong position and some app icons appear
on the wrong side of the separator.

To fix, account for all items before the separator that are currently
animating out.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3966
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3799
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1973>
(cherry picked from commit 6fe2c24e229d77b4ffde292f82390010d5ef519a)

11 months agoswipeTracker: Immediately flip delta in RTL locales
Florian Müllner [Thu, 20 Nov 2025 15:09:44 +0000 (16:09 +0100)]
swipeTracker: Immediately flip delta in RTL locales

The delta is currently flipped in a shared code path, after appending
the unmodified value to the event history. As a result, the calculated
final velocity for touchpad gestures is wrong in RTL locales.

Fix this by modifying the delta immediately when handling the events,
so that all other code operates on the correct values.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8840
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>
(cherry picked from commit a02835aacadbc14dc4350add3bae99c70e38f1b0)

11 months agoswipeTracker: Flip pan gesture velocity in RTL locales
Florian Müllner [Thu, 20 Nov 2025 14:51:23 +0000 (15:51 +0100)]
swipeTracker: Flip pan gesture velocity in RTL locales

Like the gesture delta, the final velocity needs to be flipped in
RTL locales, otherwise we end up cancelling out the gesture progress.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>
(cherry picked from commit 799a842d3a11b9d0df0e69d2d6a07ce66f926ba2)

11 months agoswipeTracker: Simplify finding previous point
Florian Müllner [Thu, 20 Nov 2025 13:34:21 +0000 (14:34 +0100)]
swipeTracker: Simplify finding previous point

We have findLastIndex() nowadays to search an array in reverse
direction.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>
(cherry picked from commit 8e29babca8adc677fcd5bc8457f497dd849ae884)

11 months agoshellDBus: Send an activation token for Accelerator(De)Activated
Sebastian Wick [Tue, 14 Oct 2025 20:36:16 +0000 (22:36 +0200)]
shellDBus: Send an activation token for Accelerator(De)Activated

This will be useful for the global shortcuts portal implementation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3917>
(cherry picked from commit d0e8dc2b66f324f6d6526c5cd333c19359047a0a)

11 months agomain: Register session with GDM on startup
Adrian Vovk [Thu, 1 May 2025 22:34:52 +0000 (18:34 -0400)]
main: Register session with GDM on startup

When no monitor is connected, gnome-shell starts but never emits
`startup-prepared` nor `startup-complete`. As a result, GDM never
detects that the shell has launched and plymouthd remains running,
preventing the system from reaching graphical.target.

Ensure that registerSessionWithGDM() is called even when no monitor
is connected, so GDM can terminate plymouthd and allow the system to
reach graphical.target properly.

Part of https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/285

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3708>
(cherry picked from commit 32a013304f8c507cb72a5419c7f4b7c553253520)

11 months agotimeLimitsManager: Clean up property description
Ignacy Kuchciński [Fri, 22 Aug 2025 13:49:35 +0000 (15:49 +0200)]
timeLimitsManager: Clean up property description

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>
(cherry picked from commit 872d6a168e07eaef4a17603705b4033dd7016b40)

11 months agooverview: Drop ::event connection in the cover pane
Carlos Garnacho [Wed, 8 Oct 2025 17:17:06 +0000 (19:17 +0200)]
overview: Drop ::event connection in the cover pane

We don't need an event handler on this widget to have it cover
other actors from receiving input.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>
(cherry picked from commit 9f2494856e24cffa984c33050b4f8e97497fb118)

11 months agoscreenshot: Don't special case resetting cursor
Carlos Garnacho [Wed, 8 Oct 2025 10:00:49 +0000 (12:00 +0200)]
screenshot: Don't special case resetting cursor

The case expressed in the comment does not seem to apply anymore,
we can reset the cursor as expected on every leave event.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>
(cherry picked from commit dc97d0a4d63b58806c53e631ea8d6217787f6a85)

11 months agosearch: Center name label vertically
Florian Müllner [Tue, 4 Nov 2025 15:14:37 +0000 (16:14 +0100)]
search: Center name label vertically

If all search results of the provider are shown, the "x more" label
is hidden, and the name label has more space than it needs.

Center the label vertically in that case to align with the icon.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8793
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3951>
(cherry picked from commit 191f3d68513552d71ed4df8e1f50c30d408d441b)

11 months agotools: Update ci-run-eslint
Florian Müllner [Wed, 2 Jul 2025 14:32:09 +0000 (16:32 +0200)]
tools: Update ci-run-eslint

We are currently still using eslint 8.x which has been unsupported
for quite a while. Update the ci-run-eslint script to a verison
that uses the supported eslint 9.x.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3938>
(cherry picked from commit af7fe22ba454d563f7532a819e6ba253c834fb32)

11 months agoworkspaceThumbnails: Add missing return values to later handlers
Florian Müllner [Mon, 3 Nov 2025 11:50:34 +0000 (12:50 +0100)]
workspaceThumbnails: Add missing return values to later handlers

MetaLaters are source functions, and should therefore return a bool
to indicate whether the source should be removed or continue.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3950>
(cherry picked from commit 948f1a7eeb9ea0cbe4d54831d94db9bf4d0ce7cd)

11 months agojs: Always use SOURCE_CONTINUE/SOURCE_REMOVE in later handlers
Florian Müllner [Mon, 3 Nov 2025 11:49:12 +0000 (12:49 +0100)]
js: Always use SOURCE_CONTINUE/SOURCE_REMOVE in later handlers

The constants are more self-explanatory (and therefore readable)
then plain true/false.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3950>
(cherry picked from commit 9fc7f3f439ae95646882dd8b60d08003a38daaf5)

11 months agobuild/tests: Run shell tests in parallel
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:04:04 +0000 (05:04 +0100)]
build/tests: Run shell tests in parallel

There's no reason why this is not the case, given that these tests are
running in completely separated environments, so they are safe to run in
parallel

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>
(cherry picked from commit a5cd8d9d5244953b45e3052dfd16ce6f5625e3e6)

11 months agooverviewControls: Disconnect signals on destruction
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:00:35 +0000 (05:00 +0100)]
overviewControls: Disconnect signals on destruction

While we are not getting errors and the ControlsManger is normally always
alive, during destruction we could still get events from other objects
that are still alive, so disconnect them all

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>
(cherry picked from commit 741c6733eadcd8f2c4fe6e34afe2143688be805f)

11 months agooverviewControls: Bind state adjustment signals to parent lifetime
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 03:57:50 +0000 (04:57 +0100)]
overviewControls: Bind state adjustment signals to parent lifetime

On tests shutdown we were sometimes getting this error:

  ** Message: 09:29:27.494: Shutting down GNOME Shell

  (gnome-shell:3728700): Gjs-CRITICAL **: 09:29:27.545:
  JS ERROR: TypeError: this._workspacesDisplay is undefined
  _update@resource:///org/gnome/shell/ui/overviewControls.js:599:37
  _initializeUI/<@resource:///org/gnome/shell/ui/main.js:279:14

Which after using the arrow function becomes:

  (gnome-shell:3731979): Gjs-CRITICAL **: 09:30:05.419:
  JS ERROR: TypeError: this._workspacesDisplay is undefined
  _update@resource:///org/gnome/shell/ui/overviewControls.js:599:37
  _init/<@resource:///org/gnome/shell/ui/overviewControls.js:343:67
  _initializeUI/<@resource:///org/gnome/shell/ui/main.js:279:14

This is because the state adjustement object lifetime is not bound to
the ControlsManager, and so we were potentially accessing to invalid
data

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>
(cherry picked from commit 935c5a0c540237ea7d1b8e38141577ac20669662)

11 months agoworkspaceThumbnail: Track later hiding drop placeholder
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 03:48:21 +0000 (04:48 +0100)]
workspaceThumbnail: Track later hiding drop placeholder

When closing the shell during a relayout we are getting this error:

    (gnome-shell:2559407): Gjs-CRITICAL **: 06:57:21.765: Object St.Bin,
    has been already disposed — impossible to access it.
    This might be caused by the object having been destroyed from C code
    using something such as destroy(), dispose(), or remove() vfuncs.
    == Stack trace for context 0x60991609b710 ==
    #0 b   resource:///org/gnome/shell/ui/workspaceThumbnail.js:1334 (5e050636fb0 @ 17)
    #1 i   resource:///org/gnome/shell/ui/main.js:279 (30c932d102e0 @ 119)

This is because the later we added is running even when not needed (e.g
when the placeholder is not visible already), but also because we may
run the later callback after the parent has been destroyed.

Prevent this to happen, by tracking the later

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>
(cherry picked from commit 60a071052a0e547e813c6da6db8b4fc8d3149398)

11 months agostatus/dwellClick: Remove unused return value
Florian Müllner [Fri, 31 Oct 2025 17:42:54 +0000 (18:42 +0100)]
status/dwellClick: Remove unused return value

The method is never used as source function, so there is no reason
to return SOURCE_REMOVE.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3946>
(cherry picked from commit 9d904a804e73c97a1ecde406f395cd77a53f10e7)

11 months agoci: Fix artifacts path for tests job
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:25:04 +0000 (05:25 +0100)]
ci: Fix artifacts path for tests job

We (I) changed the test job to use a different path in commit 342d7ab34,
but the artifacts path was not adjusted :(

Fixes: 342d7ab34a ("ci: Start with a fresh build dir to ensure test dependencies are correct")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3945>
(cherry picked from commit 72b8c9044d9d8145014852ee2e7962396ff46ba2)

11 months agobrightnessManager: Use slider as bias when auto brightness is being used
Sebastian Wick [Mon, 20 Oct 2025 11:38:37 +0000 (13:38 +0200)]
brightnessManager: Use slider as bias when auto brightness is being used

The code previously tried to ensure that the sliders were disabled when
auto brightness was active, and determine the brightness just from the
auto brightness target we get from g-s-d.

It turns out that users do want to still have some control over the
brightness, even if auto brightness is active.

The slider is now being used as a bias for the auto brightness target
instead.

This also means that we can drop the BrightnessScale::locked property.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3935>
(cherry picked from commit 157f6124d894143c7ce82559d4b845af07462928)

11 months agobrightnessManager: Propagate any attempted brightness change
Sebastian Wick [Thu, 30 Oct 2025 10:43:19 +0000 (11:43 +0100)]
brightnessManager: Propagate any attempted brightness change

The BrightnessScale was trying to be smart by not notifying changes of
its value when an action on it (stepUp, stepDown, cycleUp, set value)
resulted in no change.

It turns out that users do want to see an OSD even when their action
resulted in no change.

Always notify about attempted changes instead.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8770
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3941>
(cherry picked from commit aaef85ecbd558fec8aa138678fe859de930d42dd)

11 months agologinManager: Use systemd session auto object to get session ID
Alessandro Bono [Thu, 30 Oct 2025 10:47:17 +0000 (11:47 +0100)]
loginManager: Use systemd session auto object to get session ID

Relying on the Display property is buggy when the gdm user spawns more than
one gnome-shell instance.
```
$ loginctl
SESSION  UID USER   SEAT  LEADER CLASS         TTY   IDLE SINCE
     11   42 gdm    -     11778  manager-early -     no   -
    c20   42 gdm    seat0 34313  greeter       tty1  yes  17h ago
    c21   42 gdm    -     34938  greeter       -     no   -
    c22   42 gdm    -     35693  greeter       -     no   -
```

From the logs:
```
$ journalctl -b | grep "Will monitor"
[...]
Oct 29 15:14:59 gnome-shell[34961]: Will monitor session c20
Oct 29 15:22:57 gnome-shell[35716]: Will monitor session c20
Oct 29 15:22:58 gnome-shell[35716]: Will monitor session c20
```

Use the systemd session auto object for getting the session id. We can't return
directly the session proxy created from it because it won't emit signals. From
the documentation[1]:
```
Signals are only emitted on objects referencing a specific session ID not on the
"/org/freedesktop/login1/session/self" or "/org/freedesktop/login1/session/auto"
convenience objects, as they can only be dereferenced relative to a method caller.
```

[1] https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3942>
(cherry picked from commit 5db3a2b7bcfebdcc71038df890ae44308c98b95e)

11 months agologinManager: Improve log
Alessandro Bono [Thu, 30 Oct 2025 10:47:12 +0000 (11:47 +0100)]
loginManager: Improve log

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3942>
(cherry picked from commit c21853138be403bcd46e1439503b6656e408316d)

11 months agoosk-layouts: Drop comma key from de-extended and at-extended layouts
Sebastian Keller [Wed, 29 Oct 2025 10:09:02 +0000 (11:09 +0100)]
osk-layouts: Drop comma key from de-extended and at-extended layouts

The row containing that key was one key too long, which was causing
misalignment. The comma key is not shown in the us-extended layout
either and is available via long press on the dot key or via ?123,
making it the best candidate to remove from these layouts.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8756
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3940>
(cherry picked from commit f076b775bbbe1f73307311c3c971ca8a12e67bf3)

11 months agoRevert "status/keyboard: Track ::layout-layout-group-changed for changes"
Sebastian Keller [Tue, 28 Oct 2025 22:22:26 +0000 (23:22 +0100)]
Revert "status/keyboard: Track ::layout-layout-group-changed for changes"

This reverts commit e8d73262c73246205e8f7887d99aeb2356cfa89e.

The commit was causing freezes when changing layouts in some situations
and not all of these were adressed by f643915b, such as when switching
from the 3rd to the 4th layout using a xkb shortcut in the X11 session
with 4 layouts.

It was also breaking the order of switching layouts using modifier-only
xkb shortcuts to switch to the next group, which it caused to advance
multiple groups because of the shortcut being handled via both
_modifiersSwitcher() and _layoutGroupChanged().

Further it was possible for _layoutGroupChanged() to trigger an error
due to the locale layout added by _buildGroupStrings() at the end of the
xkb layout list being accessible via the xkb shortcuts. That layout was
not present in _inputSources, leading to "is" being undefined.

Reopens: https://gitlab.gnome.org/GNOME/mutter/-/issues/3926
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8738
Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3930
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3939>
(cherry picked from commit d6123a003afc9665e7b0067a46dc93b19ea52c07)

11 months agotools: Symlink node_modules in project root
Florian Müllner [Tue, 21 Oct 2025 18:12:59 +0000 (20:12 +0200)]
tools: Symlink node_modules in project root

NPM assumes quite strongly that it manages the project as a
whole and its package/lock files are located in the project
root.

While we somehow managed to keep the npm tooling in a subfolder,
this comes at the cost of breaking imports of additional modules.

This will become relevant when we update eslint to a supported
version, as we want to keep using the `junit` formatter in CI,
which has now been split out into a separate module.

So bite the bullet and make the node_modules folder available in
the project root.

On the plus side, having the node_modules folder in the project
root allows language servers in IDEs/editors to pick it up.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3929>
(cherry picked from commit 11a5aad53e2b462d7cac70b26515d9b7f4bb0466)

11 months agotools: Pin git node modules
Florian Müllner [Thu, 23 Oct 2025 12:06:08 +0000 (14:06 +0200)]
tools: Pin git node modules

Both changes in the config (like new/changes rules) and the eslint wrapper
(like updating to eslint 9.x) could require changes on the shell side, and
therefore require conscious update rather than randomly breaking the CI.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3929>
(cherry picked from commit b0957a21d73a55e0a994a4cb890ee7a55edbea6b)

11 months agokeyboard: Don't move window when it got unmanaged during shift animation
Sebastian Keller [Sat, 25 Oct 2025 11:03:55 +0000 (13:03 +0200)]
keyboard: Don't move window when it got unmanaged during shift animation

When a window with a text-entry at the bottom that had triggered the OSK
and was shifted up to avoid overlapping the OSK is closed right after
losing keyboard focus, this results in a crash. The focus loss triggers
the animation to move the window actor back into its original position,
which moves the underlying window when finished. That however will fail
when the window has been unmanaged and some of the underlying resources
have already been destroyed while the animation was playing.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8752
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3933>
(cherry picked from commit 4900aad2deab7398e69b1a57a38285fa73974c0f)

11 months agopanel: Fix addExternalIndicator() JSDoc comment
ClarityStorm [Mon, 27 Oct 2025 23:12:44 +0000 (23:12 +0000)]
panel: Fix addExternalIndicator() JSDoc comment

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3937>
(cherry picked from commit 71694d12a95c0560d4875fd36c55840c57e334c9)

11 months agoci: Upgrade ci-fairy
Florian Müllner [Mon, 20 Oct 2025 12:48:18 +0000 (14:48 +0200)]
ci: Upgrade ci-fairy

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3924>
(cherry picked from commit a367863afe5a0edc849766d8334bea1c9989e73b)

11 months agoci: Drop check-merge-request job
Jonas Ådahl [Sat, 25 Oct 2025 09:08:35 +0000 (11:08 +0200)]
ci: Drop check-merge-request job

The job is broken due to permission changes in GitLab, and it seems what
is checked for is now the default, making the job less useful, thus drop
it.

Related: https://gitlab.freedesktop.org/freedesktop/ci-templates/-/issues/81
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3932>
(cherry picked from commit d3e39a00e56050e52338fa9f09e257cda01451f8)

11 months agosystemActions: Don't log error when cancelled
Florian Müllner [Tue, 21 Oct 2025 22:57:26 +0000 (00:57 +0200)]
systemActions: Don't log error when cancelled

If the logout/reboot/shutdown actions are available, we expect them
to succeed. Unfortunately that changed in the light of systemd
inhibitors (that we don't know about in the shell, and that prevent
those actions now).

While it would be good to fix the underlying issue, we can at least
improve the error reporting in that case and not log the error when
the operation was cancelled: We don't know the underlying reason,
unlike gnome-session which should have logged a more helpful message.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8749
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3927>
(cherry picked from commit d3f3f4e80d338133a2083dd5c267ed456b86303d)

11 months agojs: Use logErrorUnlessCancelled() helper
Florian Müllner [Wed, 22 Oct 2025 01:30:41 +0000 (03:30 +0200)]
js: Use logErrorUnlessCancelled() helper

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3927>
(cherry picked from commit f1cd8520b7c7f0f9ee2dbb57623bba972f2cfd2c)